package com.ruoyi.shop.clientuser.collection.service.impl;

import java.util.ArrayList;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.mall.common.domain.DtsCollect;
import com.ruoyi.mall.common.domain.DtsGoods;
import com.ruoyi.mall.common.domain.DtsUser;
import com.ruoyi.mall.common.mapper.DtsCollectMapper;
import com.ruoyi.mall.common.mapper.DtsGoodsMapper;
import com.ruoyi.mall.common.mapper.DtsUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.shop.clientuser.collection.service.IDtsCollectService;

/**
 * 收藏Service业务层处理
 *
 * @author ruoyi
 * @date 2025-02-17
 */
@Service
public class DtsCollectServiceImpl implements IDtsCollectService
{
    @Autowired
    private DtsUserMapper dtsUserMapper;

    @Autowired
    private DtsCollectMapper dtsCollectMapper;

    @Autowired
    private DtsGoodsMapper dtsGoodsMapper;

    /**
     * 查询收藏
     *
     * @param id 收藏主键
     * @return 收藏
     */
    @Override
    public DtsCollect selectDtsCollectById(Long id)
    {
        return dtsCollectMapper.selectDtsCollectById(id);
    }

    /**
     * 查询收藏列表
     *
     * @param dtsCollect 收藏
     * @return 收藏
     */
    @Override
    public List<DtsCollect> selectDtsCollectList(DtsCollect dtsCollect)
    {
          // 用户列表
          List<DtsUser> dtsUserList1 = new ArrayList<>();
          // 需要返回的收藏
          List<DtsCollect> dtsCollectList = new ArrayList<>();

          // 获取查询信息
          DtsUser dtsUser1 = new DtsUser();
          dtsUser1.setUsername(dtsCollect.getUsername());
          dtsUser1.setNickname(dtsCollect.getNickname());

          // 查询所有用户
          List<DtsUser> dtsUserList = dtsUserMapper.selectList(dtsUser1);
          // 加入收藏
          DtsCollect dtsCollect1 = new DtsCollect();
          // 查询有收藏用户总数
          int count = dtsUserMapper.selectCount(dtsUser1);

          // 循环用户
          for (DtsUser dtsUser : dtsUserList){
              // 使用用户id查询收藏
              dtsCollect.setUserId(dtsUser.getId());
              // 查询收藏
              List<DtsCollect> dtsCollect2 = dtsCollectMapper.selectDtsCollectList(dtsCollect);
              // 判断是否收藏
              if (dtsCollect2.size() == 0) {
                  // 没有则下一次
                  continue;
              }
              // 有则加入用户中的收藏列表
              dtsUser.setDtsCollectList(dtsCollect2);
              // 商品列表
              List<DtsGoods> dtsGoodsList = new ArrayList<>();
              // 使用查询出来的收藏表中的商品ID查询商品
              for (DtsCollect dtsCollect3 : dtsCollect2) {
                  // 查询商品
                  dtsGoodsList.add(dtsGoodsMapper.selectDtsGoodsById(dtsCollect3.getValueId()));
              }
              // 加入商品列表
              dtsUser.setDtsGoods(dtsGoodsList);
              dtsUserList1.add(dtsUser);
          }
          dtsCollect1.setDtsUser(dtsUserList1);
          dtsCollect1.setCount(count);
          dtsCollectList.add(dtsCollect1);

//        List<DtsAdmin> userList = dtsAdminMapper.selectDtsAdminList(user);
//        List<adminvo> userVOList = new ArrayList<>();
//
//        for (DtsAdmin sysUser : userList) {
//            adminvo userVO = new adminvo();
//            userVO.setId(sysUser.getId());
//            userVO.setUsername(sysUser.getUsername());
//            userVO.setAvatar(sysUser.getAvatar());
//
//            // 获取角色名称
//            String roleIds = sysUser.getRoleIds().replace("[", "").replace("]", "");
//            List<DtsRole> roles = dtsRoleMapper.selectRolesByIds(roleIds);
//            String roleNames = roles.stream().map(DtsRole::getName).collect(Collectors.joining(","));
//            userVO.setRoleNames(roleNames);
//
//            userVOList.add(userVO);
//        }
//
//        return userVOList;

        return dtsCollectList;
    }

    /**
     * 新增收藏
     *
     * @param dtsCollect 收藏
     * @return 结果
     */
    @Override
    public int insertDtsCollect(DtsCollect dtsCollect)
    {
        return dtsCollectMapper.insertDtsCollect(dtsCollect);
    }

    /**
     * 修改收藏
     *
     * @param dtsCollect 收藏
     * @return 结果
     */
    @Override
    public int updateDtsCollect(DtsCollect dtsCollect)
    {
        dtsCollect.setUpdateTime(DateUtils.getNowDate());
        return dtsCollectMapper.updateDtsCollect(dtsCollect);
    }

    /**
     * 批量删除收藏
     *
     * @param ids 需要删除的收藏主键
     * @return 结果
     */
    @Override
    public int deleteDtsCollectByIds(Long[] ids)
    {
        return dtsCollectMapper.deleteDtsCollectByIds(ids);
    }

    /**
     * 删除收藏信息
     *
     * @param id 收藏主键
     * @return 结果
     */
    @Override
    public int deleteDtsCollectById(Long id)
    {
        return dtsCollectMapper.deleteDtsCollectById(id);
    }
}
